<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>
	<script type="text/javascript">
		var a = 3 ;
		function fn(){
			var a = 5;
			function fn2(){
				return a //5
			}
			return fn2
		}
		console.log(fn()())//5

		/*
			闭包函数：上面这个fn2就是闭包函数. 简单理解：可以读取其他函数内部的变量的函数
			如果一个函数访问了她的父级或者父级以上的作用域变量.这个函数也叫闭包函数

			作用：
			1.可以访问函数内部的变量
			2.可以让函数内部的变量保存在内存中  不会轻易被垃圾回收机制回调掉
		*/
		var a = 9;
		function fnn() {
			a = 0;
			return function(b) {
				return b + a++
			}
		}

		var f = fnn()
		/*
			f =function(b) {
				return b + a++
			}

		*/
		// 每次都会递增，因为函数内部的变量存到了内存里，不会被回收掉
		console.log(f(5))
		console.log(f(5))
		console.log(f(5))
		console.log(f(5))
		console.log(f(5))

	</script>
</body>
</html>